<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // Promise的拓展方法   =>  给所有的Promise实例使用

    // then()
    // catch()
    // finally()

    /* console.log("函数外:", 1111111)
    debugger;
    var p = new Promise(function (resolve, reject) {
        debugger;
        console.log("函数内:", 2222222);
        setTimeout(function () {
            debugger;
            console.log("函数内:", 33333)
            var num = Math.random();
            if (num > 0.5) {
                resolve(true);
            } else {
                reject(false);
            }
        }, 2000);
    })

    console.log(p); // {<pending>:undefined} */



    debugger;
    var p = new Promise(function (resolve, reject) {
        debugger;
        // 异步操作
        setTimeout(function () {
            debugger;
            var num = Math.random();
            if (num > 0.5) { // 不拖堂
                resolve("说不拖就不拖!!");
            } else { // 拖堂
                reject("该拖还要拖,不拖堂是不可能的");
            }
        }, 2000);
    })

    console.log(p); // {<pending>:undefined}

    // p.then(callback1,callback2)  为 Promise 实例添加状态改变时的回调函数。
    // then方法的第一个参数是resolved状态的回调函数，第二个参数是rejected状态的回调函数 
    // callback1    Promise实例状态 由pending(进行中)改为fulfilled已成功 ,执行此回调函数
    // callback2    Promise实例状态 由pending(进行中)改为rejected已失败 ,执行此回调函数

    // callback1,callback2 有一个形式参数 用于接收Promise实例中存储的数据

    // 可以理解为:提前订好了 状态改变时要执行的内容  => Promise实例状态改变时 执行对应的回调函数



    p.then(function (msg) {
        debugger;
        console.log("老王不拖堂", msg);
    }, function (msg) {
        debugger;
        console.log("老王还是拖堂了", msg);
    })




</script>

</html>